home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / c / AmiVoGL_MDEV.lha / src / scale.c < prev    next >
C/C++ Source or Header  |  1994-04-12  |  934b  |  54 lines

  1. #include "vogl.h"
  2.  
  3. /*
  4.  * scale
  5.  * 
  6.  * Set up a scale matrix and premultiply it and 
  7.  * the top matrix on the stack.
  8.  *
  9.  */
  10. void scale(
  11.   float x,
  12.   float y,
  13.   float z)
  14. {
  15. Token    *tok;
  16.  
  17. if (!vdevice.initialised)
  18. verror("scale: vogl not initialised");
  19.  
  20. if (vdevice.inobject) {
  21.     tok = newtokens(4);
  22.  
  23.     tok[0].i = SCALE;
  24.     tok[1].f = x;
  25.     tok[2].f = y;
  26.     tok[3].f = z;
  27.  
  28.     return;
  29.     }
  30.  
  31. /*
  32.  * Do the operations directly on the top matrix of
  33.  * the stack to speed things up.
  34.  */
  35.  
  36. vdevice.transmat->m[0][0] *= x;
  37. vdevice.transmat->m[0][1] *= x;
  38. vdevice.transmat->m[0][2] *= x;
  39. vdevice.transmat->m[0][3] *= x;
  40.  
  41. vdevice.transmat->m[1][0] *= y;
  42. vdevice.transmat->m[1][1] *= y;
  43. vdevice.transmat->m[1][2] *= y;
  44. vdevice.transmat->m[1][3] *= y;
  45.  
  46. vdevice.transmat->m[2][0] *= z;
  47. vdevice.transmat->m[2][1] *= z;
  48. vdevice.transmat->m[2][2] *= z;
  49. vdevice.transmat->m[2][3] *= z;
  50. }
  51.  
  52. /* ------------------------------------------------------------------------ */
  53.  
  54.